1
拷贝控制的机制
AI037Lesson 16
00:00

掌握 C++ 对象生命周期的关键,在于掌控其在 堆和栈中的存在机制。拷贝控制定义了类如何管理其 生命周期 通过两种操作实现:即 拷贝构造函数拷贝赋值操作符

1. 初始化与赋值的区别

直接初始化(例如, string dots(10, '.'))会直接调用构造函数。然而, 拷贝初始化string s2 = dots)依赖于拷贝构造函数。与初始化不同, 赋值trans = accum)会使用 operator=来覆盖一个已存在的对象。一个关键限制是:拷贝构造函数的参数必须是引用(const Foo&);否则,按值传递参数将引发一个 无限递归循环 拷贝调用的循环。

源对象[数据 A]目标对象[数据 A]逐成员拷贝拷贝构造函数 / 操作符=

2. 合成的作用

如果你没有定义这些成员,编译器会提供 合成的 版本,执行逐成员拷贝。请注意:虽然对简单类型足够,但对管理动态内存的类来说常常失效,可能导致悬空指针或重复释放。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>